package jplat.base.app.parser.impl;

import ebcs.database.bean.BsUserInfor;
import jplat.base.app.parser.IAppPackParser;
import jplat.core.session.JSession;
import jplat.core.trans.JAppConnectInfo;
import jplat.core.trans.JAppContext;
import jplat.core.trans.JClientRspHeader;
import jplat.error.exception.JSystemException;


public abstract class JAppPackParser implements IAppPackParser
{
	/**
	 * 初始化返回报文头.
	 * 其中包含了身份管理和会话管理.
	 * @author zhangcq
	 * @date Dec 23, 2016
	 * @comment 
	 * @param context
	 * @return
	 * @throws JSystemException
	 */
	public JClientRspHeader initRspHeader( JAppContext context  ) throws JSystemException
	{
		//组头.
		JClientRspHeader rspHeader = new JClientRspHeader(context.getRetCode(), context.getRetMsg());
		
		//是新建会话则需要返回会话信息.
		if ( context.isNewSession() )
		{
			//用户信息和会话的建立是绑定的.
			JSession session = context.getSession();
			
			//http走的标准Cookie的JSESSIONID
			rspHeader.setTtkn2(session.getSessionID());		//会话ID.

			//为了简化管理,客户信息和会话一起管理.
			/*BsUserInfor userInfo = (BsUserInfor)session.getUserInfo();
			if ( userInfo != null && userInfo.isNew() )
			{
				rspHeader.setPageId(userInfo.getVtoken());		//客户端需要传送这个给服务器进行认证.
				userInfo.setNew(false);
			}*/

			//返回sessionID
			context.getResponse().setHeader(JAppConnectInfo.H_SET_HTOKEN_NAME, session.getSessionID());
		}
		
		return rspHeader;
	}
}
